package com.rollCall.controller;

import com.rollCall.entity.Student;
import com.rollCall.entity.vo.ClazzStudentVo;
import com.rollCall.entity.vo.StudentVo;
import com.rollCall.entity.result.Result;
import com.rollCall.service.StudentService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin/student")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class StudentController {

	private final StudentService studentService;

	/**
	 * 根据学生ID获取学生信息。
	 *
	 * @param id 学生ID
	 * @return 包含学生信息的结果对象
	 */
	@GetMapping("/{id}")
	public Result<StudentVo> getStudentById(@PathVariable Long id) {
		return Result.success(studentService.getStudentById(id));
	}

	/**
	 * 根据班级ID获取该班级下的所有学生列表。
	 *
	 * @param classId 班级ID
	 * @return 包含学生列表的结果对象
	 */
	@GetMapping("/list/{classId}")
	public Result<List<Student>> getAllStudents(@PathVariable("classId") Long classId) {
		return Result.success(studentService.getAllStudents(classId));
	}

	/**
	 * 添加新学生信息。
	 *
	 * @param clazzStudentVo 包含学生及其所属班级信息的对象
	 * @return 操作结果
	 */
	@PostMapping("/add")
	public Result<Void> addStudent(@RequestBody ClazzStudentVo clazzStudentVo) {
		studentService.addStudent(clazzStudentVo);
		return Result.success();
	}

	/**
	 * 根据学生ID列表批量删除学生。
	 *
	 * @param ids 学生ID列表
	 * @return 操作结果
	 */
	@DeleteMapping("/delete/{ids}")
	public Result<Void> deleteStudent(@PathVariable("ids") List<Long> ids) {
		studentService.deleteStudent(ids);
		return Result.success();
	}


}
